

 BINARY_PLUS:
  PUSH(FP);
  MOV(FP,SP);
  PUSH(R1);
  PUSH(R2);
  PUSH(R3);
  MOV(R0,FPARG(0));
  CMP(IND(R0),T_FRACTION);
  JUMP_EQ(ARG1_FRAC);
  PUSH(1);
  PUSH(INDD(R0,1));
  CALL(MAKE_SOB_FRACTION);
  DROP(2);
ARG1_FRAC:
  MOV(R1,R0);
  MOV(R0,FPARG(1));
  CMP(IND(R0),T_FRACTION);
  JUMP_EQ(ARG2_FRAC);
  PUSH(1);
  PUSH(INDD(R0,1));
  CALL(MAKE_SOB_FRACTION);
  DROP(2);
ARG2_FRAC:
  MOV(R2,INDD(R0,2));
  MUL(R2,INDD(R1,2));
  PUSH(R2);
  MOV(R2,INDD(R0,1));
  MUL(R2,INDD(R1,2));
  MOV(R3,INDD(R1,1));
  MUL(R3,INDD(R0,2));
  ADD(R2,R3);
  PUSH(R2);
  CALL(MAKE_SOB_FRACTION);
  DROP(2);
  PUSH(R0);
  CALL(MINIMIZE_FRAC);
  DROP(1);
  POP(R3);
  POP(R2);
  POP(R1);
  POP(FP);
  RETURN;
